package yf.mall.service.app;

import yf.mall.entity.KolOrderEntity;
import yf.mall.entity.KolOrderStatEntity;
import yf.mall.entity.custom.KolOrderStatMap;
import yf.mall.vo.KolOrderStatVo;
import com.yf.service.BaseService;
import java.io.InputStream;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.web.multipart.MultipartFile;

/**
 * 统计信息表Service接口
 *
 *
 *
 * @date Sun Jul 30 10:43:48 CST 2023
 */
public interface KolOrderStatService extends BaseService<KolOrderStatEntity> {

    /************自动生成**************/
    List<KolOrderStatVo> findVo(KolOrderStatVo vo);

        KolOrderStatVo getVo(Long id);

     int updateVo(KolOrderStatVo vo);

       int saveVo(KolOrderStatVo vo);

    void downLoad(HttpServletResponse response, List<KolOrderStatVo> list);

    void upload(InputStream file);

    /***********BACK***********/




    /***********API***********/
    /**
     *  获取统计数据
     * @param openIds openId
     * @param begin
     * @param end
     * @param orderBy 排序
     * @param limit 限制条数
     * @return
     */
    List<KolOrderStatEntity> findOrderStatByOpenIds(List<String> openIds,Integer begin,Integer end,String orderBy,Integer limit);

    /**
     * 统计指定账户指定日期的统计数据
     * @param openId
     * @param date
     * @return
     */
    KolOrderStatEntity calOrderStatByOrder(String openId, Date date);

    /**
     * 统计一个时间段内每日的统计数据
     * @param openId
     * @param begin 时间段开始时间
     * @param end 时间段结束时间
     * @return
     */
    List<KolOrderStatEntity> calOrderStatByOrderWithRange(String openId,Date begin,Date end);

    /**
     * 统计销售额最高的几个用户
     * @param begin
     * @param end
     * @param limit
     * @return
     */
    List<KolOrderStatMap> findTopPayAmountOrderStat(Integer begin, Integer end, Integer limit);
}
